He creado el dominio AWS elasticsearch
https://search-xx-xx.us-east-1.es.amazonaws.com/
Al hacer clic tanto en la url elástica como en kibana a continuación, aparece el error que obtuve
{"Mensaje":"Usuario: anónimo no está autorizado para realizar: es:ESHttpGet"}
A continuación se muestra el código que funciona bien
import boto3 from requests_aws4auth import AWS4Auth from elasticsearch import Elasticsearch, RequestsHttpConnection session = boto3.session.Session() credentials = session.get_credentials() awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, session.region_name, 'es', session_token=credentials.token) es = Elasticsearch( ['https://search-testelastic-2276kyz2u4l3basec63onfq73a.us-east-1.es.amazonaws.com'], http_auth=awsauth, use_ssl=True, verify_certs=True, connection_class=RequestsHttpConnection ) def lambda_handler(event, context): es.cluster.health() es.indices.create(index='my-index', ignore=400) r = [{'Name': 'Dr. Christopher DeSimone', 'Specialised and Location': 'Health'}, {'Name': 'Dr. Tajwar Aamir (Aamir)', 'Specialised and Location': 'Health'}, {'Name': 'Dr. Bernard M. Aaron', 'Specialised and Location': 'Health'}, {'Name': 'Eliana M. Aaron', 'Specialised and Location': 'Health'}, {'Name': 'Dr. Joseph J. Aaron', 'Specialised and Location': 'Health'}, {'Name': 'Dr. Michael R. Aaron', 'Specialised and Location': 'Health'}, {'Name': 'Dr. Darryl H. Aarons', 'Specialised and Location': 'Health'}, {'Name': 'Dr. William B. Aarons', 'Specialised and Location': 'Health'}, {'Name': 'Dr. Sirike T. Aasmaa', 'Specialised and Location': 'Health'}, {'Name': 'Dr. Jacobo A. Abadi', 'Specialised and Location': 'Health'}] for e in enumerate(r): es.index(index="my-index", body=e[1])A continuación se muestra la política de acceso.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:xxxxxx:domain/xxxxx/*", "Condition": { "IpAddress": { "aws:SourceIp": "*" } } } ] }Este error indicaría que su servicio ElasticSearch no admite solicitudes anónimas (aquellas que no están firmadas con credenciales de IAM válidas).
Aunque su política se ve bien, el funcionario permite que todas las políticas se vean como se muestra a continuación
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:xxxxxx:domain/xxxxx/*" } ] }Intente utilizar el método de autenticación de la firma de AWS en el cartero, para las pruebas